@Lemon
2年前 提问
1个回答

加强API接口安全可以从哪些方面入手

安全侠
2年前

加强API接口安全可以从以下方面入手:

  • 注重用户认证:通过验证码、短信验证码和接口调用速度来限制关键接口的爆破,清晰的设计密码找回、密码修改等敏感接口的流程和token,避免被攻击者绕过。使用强随机数和强加密算法生成token,避免使用静态token,后台对密码强度进行校验,限制用户设置弱密码。

  • 权限控制:水平越权和垂直越权属于业务逻辑漏洞,目前还没有很好的工具能对该类漏洞进行有效检测,越权漏洞的数量是和系统业务的复杂度成正比的。越权不是技术问题,而是设计问题,当一个系统的业务复杂度不断升高时,它的权限系统也要随之进行升级,和业务高度耦合的而又精简的权限框架能有效的减少越权漏洞出现。

  • 避免注入攻击:保证每个进入系统的参数都被校验,可以使用spring validate来做参数格式校验,尽量使用成熟框架,比如mybatis等,可以有效降低sql注入发生概率。在使用spring validate时,如果需要使用正则对一个复杂的参数进行校验,应该尽量避免redos漏洞的出现。尽管使用框架,但排序、筛选字段和超复杂的查询还是容易出现sql注入,因为某些开发者会使用sql拼接来完成复杂的sql查询。

  • 避免信息泄露:信息泄露造成的后果往往都是严重的,核心数据的泄露更是非常致命。做好输出数据的控制,比如使用一个实体类来定义每个API输出的数据,避免多余的字段被输出到了前端。

  • 访问频率限制:关键接口要做好访问频率限制,比如发送短信验证码、登陆、修改密码和注册等,一般都是某些重要资源消耗型接口。某些接口可以做多层限制,比如第1次发验证码直接发,第2次开始需要图像验证码,第15次开始限制ip。

  • 注意容器和组件漏洞:尽量将项目使用的第三方组件升级到最新修正版,使用sca产品对项目的组件进行检测。但是如果某些攻击是在程序还未执行到API入口就完成攻击了,那一定是容器和组件漏洞,比如fastjson 、struts、甚至tomcat、weblogic这些框架和容器的某些版本都是存在一定可以执行RCE的CVE的。